---
title: "List posts in a category"
method: GET
path: "/resource/latest/category/[nodeId]/posts"
tags: ["Categories", "Taxonomy"]
---

# List posts in a category

`GET /resource/latest/category/[nodeId]/posts`

## Request

- Base URL: `http://dev.theverge.com:3002/api`
- URL: `http://dev.theverge.com:3002/api/resource/latest/category/[nodeId]/posts`
- Auth: none declared

Returns category metadata and a paginated, newest-first feed of publishable entries (post, video-post, quick-post, link-post) belonging to the given category. The response includes a `category` field with title, description, SEO fields, children, and parent hierarchy, alongside the `items` list and `pageInfo` cursor.

## Query parameters

- `nodeId` string, required
- `first` integer
- `after` string

## Response `200`

Posts retrieved successfully

- object
  - `data` CategoryPostsResponse, required
    - `category` CategoryMeta, required
      - `title` string, required
      - `description` object[], required
        - `html` string, required
      - `seo` object, required
        - `headline` string, required
        - `description` string, required
      - `children` CategoryRef[], required
        - `id` string, required
        - `title` string, required
        - `slug` string, required
        - `permalink` string, required
        - `path` string, required
      - `parent` object, nullable, required
    - `items` CategoryPostsItem[], required
      - `__typename` 'PostResourceType' | 'VideoPostResourceType' | 'QuickPostResourceType' | 'LinkPostResourceType', required
      - `source` string, nullable, required
      - `authorByLine` string, nullable, required
      - `dek` object, required
        - `html` string, required
      - `liveBadge` boolean, required
      - `primaryCategory` object, required
        - `id` string, required
        - `title` string, required
      - `publishedAt` string, nullable, required
      - `title` string, required
      - `comments` object, required
        - `enabled` boolean, required
        - `mode` 'qa' | 'standard', required
      - `globalId` string, required
      - `id` string, required
      - `wpId` number, required
      - `chorusId` number, nullable, required
      - `chorusUuid` string, nullable, required
      - `ledeMedia` object, nullable, required
        - `image` object, required
          - `id` string, required
          - `thumbnails` object, required
            - `horizontal` object, required
              - …
            - `square` object, required
              - …
        - `video` object, required
          - `id` string, required
          - `player` 'chorus' | 'youtube', required
          - `poster` object, nullable, required
            - `id` string, required
            - `thumbnails` object, required
              - …
          - `publishedAt` string, nullable, required
          - `title` string, required
          - `volumeUuid` string, required
      - `promo` object, required
        - `description` object, required
          - `html` string, required
          - `plaintext` string, required
        - `headline` string, required
        - `image` object, nullable, required
          - `id` string, required
          - `thumbnails` object, required
            - `horizontal` object, required
              - …
            - `square` object, required
              - …
      - `path` string, required
      - `permalink` string, required
      - `resourceType` 'map' | 'series' | 'authorProfile' | 'campaign' | 'category' | 'clientError' | 'customStory' | 'diningReport' | 'embedStory' | 'homepage' | 'image' | 'internalCategory' | 'internalSuperCat' | 'linkPost' | 'loopNav' | 'mmaEvent' | 'mmaFight' | 'mmaFighter' | 'mmaPromotion' | 'mmaWeightClass' | 'neighborhood' | 'package' | 'page' | 'post' | 'product' | 'productBrand' | 'quickPost' | 'redirect' | 'startHere' | 'stream' | 'superCat' | 'tag' | 'vault' | 'venue' | 'videoGame' | 'videoGamePlatform' | 'videoPost' | 'volumeVideo', required
      - `slug` string, required
      - `canonicalUrlOverride` string, required
      - `authors` object[], required
        - `slug` string, required
        - `id` string, required
        - `name` string, required
        - `path` string, required
        - `permalink` string, required
        - `title` string, required
        - `profileImage` object, nullable, required
          - `id` string, required
          - `thumbnails` object, required
            - `horizontal` object, required
              - …
            - `square` object, required
              - …
      - `primaryCampaign` object, nullable, required
        - `advertiserName` string, required
        - `advertiserPreamble` string, required
        - `id` string, required
    - `pageInfo` object, required
      - `hasNextPage` boolean, required
      - `endCursor` string, nullable, required

## Other responses

- `400`: Invalid input parameters
- `401`: Unauthorized access
- `404`: Resource not found
- `500`: Internal server error

---

[API](https://skmtc.dev/theverge/apis/the-verge-api-documentation.md) - [All operations](https://skmtc.dev/theverge/apis/the-verge-api-documentation/llms.txt) - [OpenAPI document](https://skmtc.dev/theverge/apis/the-verge-api-documentation/revisions/f44a9b8ebfc3?raw)
